[workspace]
members = [
	"crates/codec",
	"crates/core",
        "crates/client",
        "crates/common",
        "crates/datamodel",
        "crates/db/common",
        "crates/db/types",
        "crates/db/llmq",
	"crates/db/mq-types",
        "crates/db/sql",
        "crates/db/sql/migration",
	"crates/ident",
        "crates/macros",
        "crates/mailbox",
        "crates/msgqueue",
        "crates/mq-proc",
        "crates/mq-proc-worker",
	"crates/proto",
	"crates/rpc/client",
	"crates/rpc/common",
	"crates/rpc/homeserver",
	"crates/util",

	# bins go last
	"bin/cli",
	"bin/homeserver",
	"bin/user"
, "crates/db/mq-types", "crates/msgqueue", "crates/mq-proc", "crates/mq-proc-worker", "crates/macros", "crates/mailbox"]

default-members = [
	"bin/cli",
	"bin/homeserver",
	"bin/user"
]

resolver = "2"

[workspace.dependencies]
aspect-codec = { path = "crates/codec" }
aspect-core = { path = "crates/core" }
aspect-client = { path = "crates/client" }
aspect-client-rpc = { path = "crates/rpc/client" }
aspect-datamodel = { path = "crates/datamodel" }
aspect-db-common = { path = "crates/db/common" }
aspect-db-llmq = { path = "crates/db/llmq" }
aspect-db-mq-types = { path = "crates/db/mq-types" }
aspect-db-sql = { path = "crates/db/sql" }
aspect-db-sql-migration = { path = "crates/db/sql/migration" }
aspect-db-types = { path = "crates/db/types" }
aspect-homeserver-rpc = { path = "crates/rpc/homeserver" }
aspect-ident = { path = "crates/ident" }
aspect-macros = { path = "crates/macros" }
aspect-mailbox = { path = "crates/mailbox" }
aspect-msgqueue = { path = "crates/msgqueue" }
aspect-mq-proc = { path = "crates/mq-proc" }
aspect-mq-proc-worker = { path = "crates/mq-proc-worker" }
aspect-proto = { path = "crates/proto" }
aspect-rpc-common = { path = "crates/rpc/common" }
aspect-svc-common = { path = "crates/common" }
aspect-util = { path = "crates/util" }

anyhow = "1"
argh = "0.1"
async-trait = "*"
bitflags = "2.5"
borsh = "1.5"
chrono = "0.4"
ciborium = "0.2"
deadpool = "0.12"
digest = "*"
dryoc = { version = "0.5", features = ["serde"] }
ecksport-auth = "0.3.3"
ecksport-codec = "0.3.3"
ecksport-core = "0.3.3"
ecksport-net = "0.3.3"
ecksport-rpc = "0.3.3"
futures = "0.3"
hex = { version = "0.4", features = ["serde"] }
jsonrpsee = { version = "0.22", features = ["server", "client", "macros"] }
openmls = "0.5"
openmls_rust_crypto = "0.2"
openmls_traits = "0.2"
password-hash = "0.5"
pbkdf2 = { version = "0.12", features = ["simple"] }
quote = "1"
rand = "0.8"
sea-orm = { version = "1.0", features = ["sqlx-postgres", "sqlx-sqlite", "macros"] }
sea-orm-migration = { version = "1.0", features = ["runtime-tokio-native-tls", "sqlx-postgres", "sqlx-sqlite"] }
serde = "1"
serde_bytes = "0.11"
serde_json = "1"
serde_with = { version = "3.3", features = ["hex"] }
sha2 = "0.10"
sled = "0.34.7"
syn = { version = "2", features = ["full"] }
thiserror = "1"
tls_codec = "0.3" # must be kept in sync with the OpenMLS version
tokio = { version = "1.31", features = ["sync", "net", "io-util", "rt", "signal", "time"] }
tokio-util = "0.7"
tracing = "0.1"
tracing-subscriber = "0.3"
uuid = { version = "1.8", features = ["serde", "v7"] }
